// 私有作用域中带var 和不带var区别
// 带var变量在私有作用域存在变量提升，和外界没有任何关系。
// 不带var不是私有变量，是给全局window对象添加属性。会像它的上级作用域查找。一直找到window上的属性为止。

// // console.log(a, b) //undeifed  undeifed 全局的
// var a =10,b= 20  //var a=10; var b=20 window对象上面也有了 a b
// function fn() {
//     console.log(a, b) // undeifed 20 变量a定义为赋值，b不是变量,向外查找b=20用的是全局变量b,不是用window.b属性
//     var a = b =30    //var a=30; b=30 
//     // a是私有变量，不会添加到全局window对象属性；b是引用上级作用域的b b=30修改上级作用域b的值。
//     console.log(a, b) //30 30  //a是私有，b是全局。
// } 
// fn()
// console.log(a, b) //10 30 //a 被是全局。

function fn() {
    var a = 12;
    b = 13
    console.log(a, b) //12 13

}
fn()
// a is not defined
console.log(b) //b=13 a未被定义调用报错。

function fn() {
    console.log(window.b) //undefined window上没有b属性。
    console.log(b) //报错 b不是变量，未被定义。
    var a = 12;
    b = 13 //上一级作用域查找b,没有找到变量b,就找window,相当于给window添加属性b
    console.log(a, b) //12 13 b=window.b=13
}
fn()
// a is not defined
console.log(b) //b=13 a未被定义调用报错。 window.b=13
